from typing import Generic, TypeVar, Optional, Any

# 定义泛型类型变量，用于表示任意类型的数据
T = TypeVar('T')

class Result(Generic[T]):
    """
    统一的消息返回结构体
    
    属性:
        code: 状态码，200表示成功，其他表示失败
        msg: 消息内容
        data: 返回的数据，可以是任意类型
    """
    def __init__(
        self, 
        code: int = 200, 
        msg: str = "操作成功", 
        data: Optional[T] = None
    ):
        self.code = code
        self.msg = msg
        self.data = data
    
    @classmethod
    def success(cls, data: Optional[T] = None, msg: str = "操作成功") -> 'Result[T]':
        """
        返回成功结果
        """
        return cls(code=200, msg=msg, data=data)
    
    @classmethod
    def fail(cls, msg: str = "操作失败", code: int = 400, data: Optional[T] = None) -> 'Result[T]':
        """
        返回失败结果
        """
        return cls(code=code, msg=msg, data=data)
    
    def dict(self) -> dict:
        """
        将结果转换为字典
        """
        return {
            "code": self.code,
            "msg": self.msg,
            "data": self.data
        }